#pragma once

/**
 * min - return minimum of two values of the same or compatible types
 * @x: first value
 * @y: second value
 */
#define min(x, y) ((x < y) ? (x) : (y))

/**
 * max_t - return maximum of two values, using the specified type
 * @type: data type to use
 * @x: first value
 * @y: second value
 */
#define max_t(type, x, y)      \
    ({                         \
        type __x = (x);        \
        type __y = (y);        \
        __x < __y ? __y : __x; \
    })

#define max(x, y) ((x > y) ? (x) : (y))
